if(gps_trk_transfer == -1)
return GPS_UNSUPPORTED;
+ if(gps_trk_transfer == 302) {
+ GPS_Warning("A302: Device does not support sending tracks to it. ");
+ return GPS_UNSUPPORTED;
+ }
+
/* Only those GPS' with L001 can send track data */
if(!LINK_ID[gps_link_type].Pid_Trk_Data)
{
case pD312:
GPS_D310_Send(data,trk[i],&len);
break;
+ case pD311:
+ GPS_D311_Send(data,trk[i],&len);
+ break;
default:
- GPS_Error("A301_Send: Unknown track protocol");
+ GPS_Error("A301_Send: Unknown track protocol %d", gps_trk_hdr_type);
return PROTOCOL_ERROR;
}
}
len = 13;
break;
case pD301:
- case pD302:
- GPS_D301_Send(data,trk[i]);
+ GPS_D301_Send(data,trk[i], 301);
len = 21;
break;
+ case pD302:
+ GPS_D301_Send(data,trk[i], 302);
+ len = 25;
+ break;
case pD304:
GPS_D304_Send(data,trk[i]);
- len = 26;
+ len = 23;
break;
default:
GPS_Error("A301_Send: Unknown track protocol");
**
** @return [void]
************************************************************************/
-void GPS_D301_Send(UC *data, GPS_PTrack trk)
+void GPS_D301_Send(UC *data, GPS_PTrack trk, int type)
{
UC *p;
GPS_Util_Put_Float(p,trk->dpth);
p+=sizeof(float);
+ if (type == 302) {
+ GPS_Util_Put_Float(p,1.0e25);
+ p+=sizeof(float);
+ }
+
*p = trk->tnew;
return;
*p = trk->cadence > 0 ? trk->cadence : 0xff;
p+=sizeof(char);
- *p = trk->tnew;
-
return;
}
+/* @func GPS_D311_Send **************************************************
+**
+** Form track header data string
+**
+** @param [w] data [UC *] string to write to
+** @param [r] trk [GPS_PTrack] track data
+** @param [w] len [int32 *] length of data
+**
+** @return [void]
+************************************************************************/
+void GPS_D311_Send(UC *data, GPS_PTrack trk, int32 *len)
+{
+ UC *p;
+ int identifier;
+ p = data;
+// sscanf(trk->trk_ident, "%d", &identifier);
+ identifier = 0x1234;
+ GPS_Util_Put_Short(p,identifier);
+ p += 2;
+ *len = p-data;
+
+ return;
+}
/* @func GPS_D310_Send **************************************************
**
void GPS_D310_Get(GPS_PTrack *trk, UC *s);
void GPS_D311_Get(GPS_PTrack *trk, UC *s);
void GPS_D300_Send(UC *data, GPS_PTrack trk);
-void GPS_D301_Send(UC *data, GPS_PTrack trk);
+void GPS_D301_Send(UC *data, GPS_PTrack trk, int type);
void GPS_D304_Send(UC *data, GPS_PTrack trk);
void GPS_D310_Send(UC *data, GPS_PTrack trk, int32 *len);
+void GPS_D311_Send(UC *data, GPS_PTrack trk, int32 *len);
int32 GPS_A400_Get(const char *port, GPS_PWay **way);
int32 GPS_A400_Send(const char *port, GPS_PWay *way, int32 n);